/***********************************************************************
 * Module:  Firma.java
 * Author:  Igor Spremo, Milan Stojkov
 * Purpose: Defines the Class Firma
 ***********************************************************************/

package model.entity;

import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

/**
 * 
 * @author Igor Spremo, Milan Stojkov
 *
 */

@SuppressWarnings("serial")
public class Firma implements Serializable {
	
	protected Integer id;
	protected String imeFirme;
	protected int sifraDelatnostiFirme;
	protected int pibFirme;
	protected int maticniBrojFirme;
	protected String webSiteAdresaFirme;
	protected String emailFirme;
	protected int verzija;

	protected Collection<VrstaUsluge> vrsteUsluga;
	protected Collection<Telefon> telefoni;
	protected Collection<Telefon> faksevi;
	protected Collection<Radnik> radnici;
	protected Collection<Saradnik> saradnici;
	protected Collection<ZiroRacun> ziroRacuni;
	protected Collection<Poslovnica> poslovnice;
	protected Collection<PoslovnaGodina> poslovneGodine;
	protected Collection<Magacin> magacini;
	
	

	public Collection<VrstaUsluge> getVrsteUsluga() {
		if (vrsteUsluga == null)
			vrsteUsluga = new HashSet<VrstaUsluge>();
		
		return vrsteUsluga;
	}

	public Iterator<VrstaUsluge> getIteratorVrsteUsluga() {
		if (vrsteUsluga == null)
			vrsteUsluga = new HashSet<VrstaUsluge>();
		
		return vrsteUsluga.iterator();
	}

	public void setVrsteUsluga(
			Collection<VrstaUsluge> newVrsteUsluga) {
		removeAllVrsteUsluga();
		for (Iterator<VrstaUsluge> iter = newVrsteUsluga.iterator(); iter.hasNext();)
			addVrstaUsluge((VrstaUsluge) iter.next());
	}

	public void addVrstaUsluge(VrstaUsluge newVrstaUsluge) {
		if (newVrstaUsluge == null)
			return;
		if (this.vrsteUsluga == null)
			this.vrsteUsluga = new HashSet<VrstaUsluge>();
		if (!this.vrsteUsluga.contains(newVrstaUsluge))
			this.vrsteUsluga.add(newVrstaUsluge);
	}

	public void removeVrstaUsluge(VrstaUsluge oldVrstaUsluge) {
		if (oldVrstaUsluge == null)
			return;
		if (this.vrsteUsluga != null)
			if (this.vrsteUsluga.contains(oldVrstaUsluge))
				this.vrsteUsluga.remove(oldVrstaUsluge);
	}

	public void removeAllVrsteUsluga() {
		if (vrsteUsluga != null)
			vrsteUsluga.clear();
	}

	public Collection<Telefon> getTelefoni() {
		if (telefoni == null)
			telefoni = new HashSet<Telefon>();
		
		return telefoni;
	}

	public Iterator<Telefon> getIteratorTelefoni() {
		if (telefoni == null)
			telefoni = new HashSet<Telefon>();
		
		return telefoni.iterator();
	}

	public void setTelefoni(Collection<Telefon> newTelefoni) {
		removeAllTelefoni();
		for (Iterator<Telefon> iter = newTelefoni.iterator(); iter.hasNext();)
			addTelefon((Telefon) iter.next());
	}

	public void addTelefon(Telefon newTelefon) {
		if (newTelefon == null)
			return;
		if (this.telefoni == null)
			this.telefoni = new HashSet<Telefon>();
		if (!this.telefoni.contains(newTelefon))
			this.telefoni.add(newTelefon);
	}

	public void removeTelefon(Telefon oldTelefon) {
		if (oldTelefon == null)
			return;
		if (this.telefoni != null)
			if (this.telefoni.contains(oldTelefon))
				this.telefoni.remove(oldTelefon);
	}

	public void removeAllTelefoni() {
		if (telefoni != null)
			telefoni.clear();
	}

	public Collection<Telefon> getFaksevi() {
		if (faksevi == null)
			faksevi = new HashSet<Telefon>();
		
		return faksevi;
	}

	public Iterator<Telefon> getIteratorFaksevi() {
		if (faksevi == null)
			faksevi = new HashSet<Telefon>();
		
		return faksevi.iterator();
	}

	public void setFaksevi(Collection<Telefon> newFaksevi) {
		removeAllFaksevi();
		for (Iterator<Telefon> iter = newFaksevi.iterator(); iter.hasNext();)
			addFaks((Telefon) iter.next());
	}

	public void addFaks(Telefon newFaks) {
		if (newFaks == null)
			return;
		if (this.faksevi == null)
			this.faksevi = new HashSet<Telefon>();
		if (!this.faksevi.contains(newFaks))
			this.faksevi.add(newFaks);
	}

	public void removeFaks(Telefon oldFaks) {
		if (oldFaks == null)
			return;
		if (this.faksevi != null)
			if (this.faksevi.contains(oldFaks))
				this.faksevi.remove(oldFaks);
	}

	public void removeAllFaksevi() {
		if (faksevi != null)
			faksevi.clear();
	}

	public Collection<Radnik> getRadnici() {
		if (radnici == null)
			radnici = new HashSet<Radnik>();
		
		return radnici;
	}

	public Iterator<Radnik> getIteratorRadnici() {
		if (radnici == null)
			radnici = new HashSet<Radnik>();
		
		return radnici.iterator();
	}

	public void setRadnici(Collection<Radnik> newRadnici) {
		removeAllRadnici();
		for (Iterator<Radnik> iter = newRadnici.iterator(); iter.hasNext();)
			addRadnik((Radnik) iter.next());
	}

	public void addRadnik(Radnik newRadnik) {
		if (newRadnik == null)
			return;
		if (this.radnici == null)
			this.radnici = new HashSet<Radnik>();
		if (!this.radnici.contains(newRadnik))
			this.radnici.add(newRadnik);
	}

	public void removeRadnik(Radnik oldRadnik) {
		if (oldRadnik == null)
			return;
		if (this.radnici != null)
			if (this.radnici.contains(oldRadnik))
				this.radnici.remove(oldRadnik);
	}

	public void removeAllRadnici() {
		if (radnici != null)
			radnici.clear();
	}

	public Collection<Saradnik> getSaradnici() {
		if (saradnici == null)
			saradnici = new HashSet<Saradnik>();
		
		return saradnici;
	}

	public Iterator<Saradnik> getIteratorSaradnici() {
		if (saradnici == null)
			saradnici = new HashSet<Saradnik>();
		
		return saradnici.iterator();
	}

	public void setSaradnici(Collection<Saradnik> newSaradnici) {
		removeAllSaradnici();
		for (Iterator<Saradnik> iter = newSaradnici.iterator(); iter.hasNext();)
			addSaradnik((Saradnik) iter.next());
	}

	public void addSaradnik(Saradnik newSaradnik) {
		if (newSaradnik == null)
			return;
		if (this.saradnici == null)
			this.saradnici = new HashSet<Saradnik>();
		if (!this.saradnici.contains(newSaradnik))
			this.saradnici.add(newSaradnik);
	}

	public void removeSaradnik(Saradnik oldSaradnik) {
		if (oldSaradnik == null)
			return;
		if (this.saradnici != null)
			if (this.saradnici.contains(oldSaradnik))
				this.saradnici.remove(oldSaradnik);
	}

	public void removeAllSaradnici() {
		if (saradnici != null)
			saradnici.clear();
	}

	public Collection<ZiroRacun> getZiroRacuni() {
		if (ziroRacuni == null)
			ziroRacuni = new HashSet<ZiroRacun>();
		
		return ziroRacuni;
	}

	public Iterator<ZiroRacun> getIteratorZiroRacuni() {
		if (ziroRacuni == null)
			ziroRacuni = new HashSet<ZiroRacun>();
		
		return ziroRacuni.iterator();
	}

	public void setZiroRacuni(Collection<ZiroRacun> newZiroRacuni) {
		removeAllZiroRacuni();
		for (Iterator<ZiroRacun> iter = newZiroRacuni.iterator(); iter.hasNext();)
			addZiroRacun((ZiroRacun) iter.next());
	}

	public void addZiroRacun(ZiroRacun newZiroRacun) {
		if (newZiroRacun == null)
			return;
		if (this.ziroRacuni == null)
			this.ziroRacuni = new HashSet<ZiroRacun>();
		if (!this.ziroRacuni.contains(newZiroRacun))
			this.ziroRacuni.add(newZiroRacun);
	}

	public void removeZiroRacun(ZiroRacun oldZiroRacun) {
		if (oldZiroRacun == null)
			return;
		if (this.ziroRacuni != null)
			if (this.ziroRacuni.contains(oldZiroRacun))
				this.ziroRacuni.remove(oldZiroRacun);
	}

	public void removeAllZiroRacuni() {
		if (ziroRacuni != null)
			ziroRacuni.clear();
	}

	public Collection<Poslovnica> getPoslovnice() {
		if (poslovnice == null)
			poslovnice = new HashSet<Poslovnica>();
		
		return poslovnice;
	}

	public Iterator<Poslovnica> getIteratorPoslovnice() {
		if (poslovnice == null)
			poslovnice = new HashSet<Poslovnica>();
		
		return poslovnice.iterator();
	}

	public void setPoslovnice(Collection<Poslovnica> newPoslovnice) {
		removeAllPoslovnice();
		for (Iterator<Poslovnica> iter = newPoslovnice.iterator(); iter.hasNext();)
			addPoslovnica((Poslovnica) iter.next());
	}

	public void addPoslovnica(Poslovnica newPoslovnica) {
		if (newPoslovnica == null)
			return;
		if (this.poslovnice == null)
			this.poslovnice = new HashSet<Poslovnica>();
		if (!this.poslovnice.contains(newPoslovnica))
			this.poslovnice.add(newPoslovnica);
	}

	public void removePoslovnica(Poslovnica oldPoslovnica) {
		if (oldPoslovnica == null)
			return;
		if (this.poslovnice != null)
			if (this.poslovnice.contains(oldPoslovnica))
				this.poslovnice.remove(oldPoslovnica);
	}

	public void removeAllPoslovnice() {
		if (poslovnice != null)
			poslovnice.clear();
	}

	public Collection<PoslovnaGodina> getPoslovneGodine() {
		if (poslovneGodine == null)
			poslovneGodine = new HashSet<PoslovnaGodina>();
		
		return poslovneGodine;
	}

	public Iterator<PoslovnaGodina> getIteratorPoslovneGodine() {
		if (poslovneGodine == null)
			poslovneGodine = new HashSet<PoslovnaGodina>();
		
		return poslovneGodine.iterator();
	}

	public void setPoslovneGodine(
			Collection<PoslovnaGodina> newPOSLOVNA_GODINA) {
		removeAllPoslovneGodine();
		for (Iterator<PoslovnaGodina> iter = newPOSLOVNA_GODINA.iterator(); iter.hasNext();)
			addPoslovnaGodina((PoslovnaGodina) iter.next());
	}

	public void addPoslovnaGodina(PoslovnaGodina newPoslovnaGodina) {
		if (newPoslovnaGodina == null)
			return;
		if (this.poslovneGodine == null)
			this.poslovneGodine = new HashSet<PoslovnaGodina>();
		if (!this.poslovneGodine.contains(newPoslovnaGodina))
			this.poslovneGodine.add(newPoslovnaGodina);
	}

	public void removePoslovnaGodina(PoslovnaGodina oldPoslovnaGodina) {
		if (oldPoslovnaGodina == null)
			return;
		if (this.poslovneGodine != null)
			if (this.poslovneGodine.contains(oldPoslovnaGodina))
				this.poslovneGodine.remove(oldPoslovnaGodina);
	}

	public void removeAllPoslovneGodine() {
		if (poslovneGodine != null)
			poslovneGodine.clear();
	}

	public Collection<Magacin> getMagacini() {
		if (magacini == null)
			magacini = new HashSet<Magacin>();
		
		return magacini;
	}

	public Iterator<Magacin> getIteratorMagacini() {
		if (magacini == null)
			magacini = new HashSet<Magacin>();
		
		return magacini.iterator();
	}

	public void setMagacini(Collection<Magacin> newMagacini) {
		removeAllMagacini();
		for (Iterator<Magacin> iter = newMagacini.iterator(); iter.hasNext();)
			addMagacin((Magacin) iter.next());
	}

	public void addMagacin(Magacin newMagacin) {
		if (newMagacin == null)
			return;
		if (this.magacini == null)
			this.magacini = new HashSet<Magacin>();
		if (!this.magacini.contains(newMagacin))
			this.magacini.add(newMagacin);
	}

	public void removeMagacin(Magacin oldMagacin) {
		if (oldMagacin == null)
			return;
		if (this.magacini != null)
			if (this.magacini.contains(oldMagacin))
				this.magacini.remove(oldMagacin);
	}

	public void removeAllMagacini() {
		if (magacini != null)
			magacini.clear();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getImeFirme() {
		return imeFirme;
	}

	public void setImeFirme(String imeFirme) {
		this.imeFirme = imeFirme;
	}

	public int getSifraDelatnostiFirme() {
		return sifraDelatnostiFirme;
	}

	public void setSifraDelatnostiFirme(int sifraDelatnostiFirme) {
		this.sifraDelatnostiFirme = sifraDelatnostiFirme;
	}

	public int getPibFirme() {
		return pibFirme;
	}

	public void setPibFirme(int pibFirme) {
		this.pibFirme = pibFirme;
	}

	public int getMaticniBrojFirme() {
		return maticniBrojFirme;
	}

	public void setMaticniBrojFirme(int maticniBrojFirme) {
		this.maticniBrojFirme = maticniBrojFirme;
	}

	public String getWebSiteAdresaFirme() {
		return webSiteAdresaFirme;
	}

	public void setWebSiteAdresaFirme(String webSiteAdresaFirme) {
		this.webSiteAdresaFirme = webSiteAdresaFirme;
	}

	public String getEmailFirme() {
		return emailFirme;
	}

	public void setEmailFirme(String emailFirme) {
		this.emailFirme = emailFirme;
	}

	public int getVerzija() {
		return verzija;
	}

	public void setVerzija(int verzija) {
		this.verzija = verzija;
	}

}